package com.github.cyf.common.util;

import org.slf4j.MDC;
import java.util.Map;
import java.util.UUID;

/**
 * 日志追踪
 * @author chenyifan
 * @create 2024-08-27 16:01
 */
public class MDCUtil {

    public static final String TRACE_ID = "traceId";

    /**
     * 获取 key 对应的 value
     * @param key
     * @return
     */
    public static String get(String key) {
        return MDC.get(key);
    }

    /**
     * 设置值
     * @param key
     * @param value
     */
    public static void put(String key, String value) {
        MDC.put(key, value);
    }

    /**
     * 获取跟踪 id
     * @return
     */
    public static String getTraceId() {
        return MDC.get(TRACE_ID);
    }

    /**
     * 设置跟踪 id
     * @param traceId
     */
    public static void setTraceId(String traceId) {
        MDC.put(TRACE_ID, traceId);
    }

    /**
     * 设置默认的跟踪 id
     */
    public static void setDefaultTraceId() {
        setTraceId(UUID.randomUUID().toString().replace("-", ""));
    }

    /**
     * 清楚当前线程 MDC 的内容
     */
    public static void clear() {
        MDC.clear();
    }

    /**
     * 获取当前线程 MDC 的内容
     */
    public static Map<String, String> getCopyOfContextMap() {
        return MDC.getCopyOfContextMap();
    }

    /**
     * 设置线程 MDC 的内容
     * @param contextMap
     */
    public static void setContextMap(Map<String, String> contextMap) {
        MDC.setContextMap(contextMap);
    }
}